[ARM64] 破解华为ExaGear,让它可以在飞腾CPU上运行 |
您所在的位置:网站首页 › exagear failed error=10 › [ARM64] 破解华为ExaGear,让它可以在飞腾CPU上运行 |
把这个程序编译成arm64,然后对其进行调试,就能知道获取CPU型号的汇编指令是什么样的了。然后去exagear二进制里搜相关指令。 https://blog.csdn.net/buknow/article/details/107721094 搜到之后,还需要思考一些事情。问题在于:修改空间很少,函数调用后马上就返回了,上下都没有空闲空间。这导致你几乎只有一条指令的修改空间,但CPU型号寄存器的内容很长(32位),无法用立即数表示,所以塞不进单条指令。 于是无法修改获取型号的指令,需要修改对型号进行运算的指令,也就是02 7C 18 53,它是从结果寄存器中截取CPU厂商ID的指令,厂商ID很小,可以用立即数表示。于是只需要把这条指令改成立即数赋值指令(02 09 80 D2)即可,该指令把结果设为华为的厂商ID,于是通过了校验。 注意:二进制里有两处02 7C 18 53,需要修改的是第二处。 此外,ida pro可以把02 7C 18 53这样的机器码显示成ARM汇编指令,这样就更容易理解。不过我没打开ida pro,所以没有截图。如果你感兴趣,可以自己用ida pro打开/opt/exagear/bin/ubt_x64a64_al和/opt/exagear/bin/ubt_x32a64_al进行查看。 备注:ida pro似乎没有直接修改二进制文件的功能,所以搞清楚怎么改之后,还要用十六进制编辑器进行实际的修改,推荐使用HxD。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |